import { saveAs } from 'file-saver'
import JSZip from 'jszip'

export function transZip(obj) {
  const zip = new JSZip()
  // 向zip文件中添加图片，可以添加多个文件或者图片，此处以图片为例
  // base64图片需要去掉base64图片标识
  new Promise(resolve => {
    obj.list.forEach((item, index) => {
      if (obj.type === 'image') {
        if (item.url.split(',')[1]) {
          zip.file(`${item.name}-${new Date().getTime()}${index}.jpg`, item.url.substring(item.url.indexOf(',') + 1), { base64: true })
        }
      } else if (obj.type === 'video') {
        if (item.url) {
          zip.file(`${item.name}-${new Date().getTime()}${index}.mp4`, item.url)
        }
      }
      if (index === obj.list.length - 1) {
        const files = JSON.stringify(zip.files)
        resolve(files)
      }
    })
  }).then(files => {
    if (files !== '{}') {
      zip.generateAsync({
        type: 'blob', // 压缩类型
        compression: 'DEFLATE', // STORE：默认不压缩 DEFLATE：需要压缩
        compressionOptions: {
          level: 9 // 压缩等级1~9    1压缩速度最快，9最优压缩方式
          // [使用一张图片测试之后1和9压缩的力度不大，相差100字节左右]
        }
      }).then((content) => {
        // 压缩的结果为blob类型（二进制流）,可用作文件上传
        // 直接在浏览器打成capture.zip包并下载，saveAs依赖的js是FileSaver.js
        if (obj.type === 'image') {
          saveAs(content, 'capture' + (new Date().getTime()) + '.zip')
        } else if (obj.type === 'video') {
          saveAs(content, 'record' + (new Date().getTime()) + '.zip')
        }
      })
    }
  })
}
